#ifndef __MAININTERFACE_H_INCL__
#define __MAININTERFACE_H_INCL__

#include "datamanager/datamanager.h"

namespace PBVP {
	class MainWindow;
	class RenderManager;
	class Environment;
	class FileExtensionManager;
	///This is the Interface that plugins use to communicate with the server application 	

	class MainInterface {
	public:
		///
		MainInterface(MainWindow *pWin); 
		///
		virtual ~MainInterface();

		/// 
		const MainWindow* getMainWindow() const {
			return m_pMainWin;
		}

		MainWindow* getMainWindow() {
			return m_pMainWin;
		}
		/// 
		DataManager* getDataManager() const {
			return m_pDataManager;
		}

		/// 
		RenderManager* getRenderManager() const {
			return m_pRenderManager;
		}
		/// 
		FileExtensionManager* getFileExtensionManager() const {
			return m_pExtensionManager;
		}
		/// 
		Environment& getEnvironment() const {
			return *m_pEnvironment;
		}
		
	private:
		MainWindow *m_pMainWin;
		DataManager* m_pDataManager;
		RenderManager *m_pRenderManager;
		Environment *m_pEnvironment;
		FileExtensionManager *m_pExtensionManager;
	};
}

#endif // __MAININTERFACE_H_INCL__

